单片机C语言C51的数据类型

您所在的位置:网站首页 char int float double占几个字节 单片机C语言C51的数据类型

单片机C语言C51的数据类型

2024-07-05 14:56| 来源: 网络整理| 查看: 265

 

C51的数据类型分为基本数据类型和组合数据类型,情况与标准C中的数据类型基本相同,但其中char型与short型相同,float型与double型相同,另外,C51中还有专门针对于51单片机的特殊功能寄存器型和位类型。

一.字符型char

有signed char和unsigned char之分,默认为signed char。它们的长度均为一个字节,用于存放一个单字节的数据。

对于signed char,它用于定义带符号字节数据,其字节的最高位为符号位,“0”表示正数,“1”表示负数,补码表示,所能表示的数值范围是-128~+127;

对于unsigned char,它用于定义无符号字节数据或字符,可以存放一个字节的无符号数,其取值范围为0~255。unsigned char可以用来存放无符号数,也可以存放西文字符,一个西文字符占一个字节,在计算机内部用ASCII码存放。

二.int整型

分singed int和unsigned int。默认为signed int。它们的长度均为两个字节,用于存放一个双字节数据。对于signed int,用于存放两字节带符号数,补码表示,数的范畴为-32768~+32767。对于unsigned int,用于存放两字节无符号数,数的范围为0~65535。

三.long长整型

分singed long和unsigned long。默认为signed long。它们的长度均为四个字节,用于存放一个四字节数据。对于signed long,用于存放四字节带符号数,补码表示,数的范畴为-2147483648~+2147483647。对于unsigned long,用于存放四字节无符号数,数的范围为0~4294967295。

四.float浮点型

float型数据的长度为四个字节,格式符合IEEE-754标准的单精度浮点型数据,包含指数和尾数两部分,最高位为符号位,“1”表示负数,“0”表示正数,其次的8位为阶码,最后的23位为尾数的有效数位,由于尾数的整数部分隐含为“1”,所以尾数的精度为24位。

五.* 指针型

指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量要占用一定的内存单元,对不同的处理器其长度不一样,在C51中它的长度一般为1~3个字节。

六.特殊功能寄存器型

这是C51扩充的数据类型,用于访问51单片机中的特殊功能寄存器数据,它分sfr和sfr16两种类型。其中:

sfr为字节型特殊功能寄存器类型,占一个内存单元,利用它可以访问51内部的所有特殊功能寄存器;

sfr16为双字节型特殊功能寄存器类型,占用两个字节单元,利用它可以访问51内部的所有两个字节的特殊功能寄存器。

在C51中对特殊功能寄存器的访问必须先用sfr或sfr16进行声明。

七.位类型

这也是C51中扩充的数据类型,用于访问51单片机中的可寻址的位单元。在C51中,支持两种位类型:bit型和sbit型。它们在内存中都只占一个二进制位,其值可以是“1”或“0”。

其中:用bit定义的位变量在C51编译器编译时,在不同的时候位地址是可以变化的,而用sbit定义的位变量必须与51单片机的一个可以寻址位单元或可位寻址的字节单元中的某一位联系在一起,在C51编译器编译时,其对应的位地址是不可变化的。

KEIL C51编译器能够识别的基本数据类型:

在C51语言程序中,有可能会出现在运算中数据类型不一致的情况。C51允许任何标准数据类型的隐式转换,隐式转换的优先级顺序如下:

Bit→char→int→long→float→signed→unsigned

也就是说,当char型与int型进行运算时,先自动对char型扩展为int型,然后与int型进行运算,运算结果为int型。C51除了支持隐式类型转换外,还可以通过强制类型转换符“()”对数据类型进行人为的强制转换。

C5l编译器除了能支持以上这些基本数据类型之外,还能支持一些复杂的组合型数据类型,如数组类型、指针类型、结构类型、联合类型等这些复杂的数据类型,在后面将相继介绍。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3